home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / d3d.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  18.0 KB  |  395 lines

  1. /*==========================================================================;
  2.  *
  3.  *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *  File:       d3d.h
  6.  *  Content:    Direct3D include file
  7.  *
  8.  ***************************************************************************/
  9.  
  10. #ifndef _D3D_H_
  11. #define _D3D_H_
  12. #pragma option push -b
  13.  
  14. #include <stdlib.h>
  15.  
  16. #ifdef _WIN32
  17. #define COM_NO_WINDOWS_H
  18. #include <objbase.h>
  19. #else
  20. #include "d3dcom.h"
  21. #endif
  22.  
  23. #ifdef _WIN32
  24. #define D3DAPI WINAPI
  25. #else
  26. #define D3DAPI
  27. #endif
  28.  
  29. /*
  30.  * Interface IID's
  31.  */
  32. #if defined( _WIN32 ) && !defined( _NO_COM)
  33. DEFINE_GUID( IID_IDirect3D,             0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  34. DEFINE_GUID( IID_IDirect3DTexture,      0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  35. DEFINE_GUID( IID_IDirect3DLight,        0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  36. DEFINE_GUID( IID_IDirect3DMaterial,     0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  37. DEFINE_GUID( IID_IDirect3DExecuteBuffer,0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  38. DEFINE_GUID( IID_IDirect3DViewport,     0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  39. #endif
  40.  
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44.  
  45. /*
  46.  * Data structures
  47.  */
  48. #ifdef __cplusplus
  49.  
  50. /* 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined */
  51. struct IDirect3D;
  52. struct IDirect3DDevice;
  53. struct IDirect3DExecuteBuffer;
  54. struct IDirect3DLight;
  55. struct IDirect3DMaterial;
  56. struct IDirect3DTexture;
  57. struct IDirect3DViewport;
  58. typedef struct IDirect3D                *LPDIRECT3D;
  59. typedef struct IDirect3DDevice          *LPDIRECT3DDEVICE;
  60. typedef struct IDirect3DExecuteBuffer   *LPDIRECT3DEXECUTEBUFFER;
  61. typedef struct IDirect3DLight           *LPDIRECT3DLIGHT;
  62. typedef struct IDirect3DMaterial        *LPDIRECT3DMATERIAL;
  63. typedef struct IDirect3DTexture         *LPDIRECT3DTEXTURE;
  64. typedef struct IDirect3DViewport        *LPDIRECT3DVIEWPORT;
  65.  
  66. #else
  67.  
  68. typedef struct IDirect3D                *LPDIRECT3D;
  69. typedef struct IDirect3DDevice          *LPDIRECT3DDEVICE;
  70. typedef struct IDirect3DExecuteBuffer   *LPDIRECT3DEXECUTEBUFFER;
  71. typedef struct IDirect3DLight           *LPDIRECT3DLIGHT;
  72. typedef struct IDirect3DMaterial        *LPDIRECT3DMATERIAL;
  73. typedef struct IDirect3DTexture         *LPDIRECT3DTEXTURE;
  74. typedef struct IDirect3DViewport        *LPDIRECT3DVIEWPORT;
  75.  
  76. #endif
  77.  
  78. #include "d3dtypes.h"
  79. #include "d3dcaps.h"
  80.  
  81. /*
  82.  * IDirect3D
  83.  */
  84. #undef INTERFACE
  85. #define INTERFACE IDirect3D
  86. DECLARE_INTERFACE_(IDirect3D, IUnknown)
  87. {
  88.     /*** IUnknown methods ***/
  89.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  90.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  91.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  92.     /*** IDirect3D methods ***/
  93.     STDMETHOD(Initialize) (THIS_ REFIID) PURE;
  94.     STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID) PURE;
  95.     STDMETHOD(CreateLight) (THIS_ LPDIRECT3DLIGHT*, IUnknown*) PURE;
  96.     STDMETHOD(CreateMaterial) (THIS_ LPDIRECT3DMATERIAL*, IUnknown*) PURE;
  97.     STDMETHOD(CreateViewport) (THIS_ LPDIRECT3DVIEWPORT*, IUnknown*) PURE;
  98.     STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT) PURE;
  99. };
  100.  
  101. #if !defined(__cplusplus) || defined(CINTERFACE)
  102. #define IDirect3D_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
  103. #define IDirect3D_AddRef(p)                       (p)->lpVtbl->AddRef(p)
  104. #define IDirect3D_Release(p)                      (p)->lpVtbl->Release(p)
  105. #define IDirect3D_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
  106. #define IDirect3D_EnumDevices(p, a, b)            (p)->lpVtbl->EnumDevices(p, a, b)
  107. #define IDirect3D_CreateLight(p, a, b)            (p)->lpVtbl->CreateLight(p, a, b)
  108. #define IDirect3D_CreateMaterial(p, a, b)         (p)->lpVtbl->CreateMaterial(p, a, b)
  109. #define IDirect3D_CreateViewport(p, a, b)         (p)->lpVtbl->CreateViewport(p, a, b)
  110. #define IDirect3D_FindDevice(p, a, b)             (p)->lpVtbl->FindDevice(p, a, b)
  111. #endif
  112.  
  113. /*
  114.  * IDirect3DDevice
  115.  */
  116. #undef INTERFACE
  117. #define INTERFACE IDirect3DDevice
  118. DECLARE_INTERFACE_(IDirect3DDevice, IUnknown)
  119. {
  120.     /*** IUnknown methods ***/
  121.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  122.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  123.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  124.     /*** IDirect3DDevice methods ***/
  125.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D, LPGUID, LPD3DDEVICEDESC) PURE;
  126.     STDMETHOD(GetCaps) (THIS_ LPD3DDEVICEDESC, LPD3DDEVICEDESC) PURE;
  127.     STDMETHOD(SwapTextureHandles) (THIS_ LPDIRECT3DTEXTURE, LPDIRECT3DTEXTURE) PURE;
  128.     STDMETHOD(CreateExecuteBuffer) (THIS_ LPD3DEXECUTEBUFFERDESC, LPDIRECT3DEXECUTEBUFFER*, IUnknown*) PURE;
  129.     STDMETHOD(GetStats) (THIS_ LPD3DSTATS) PURE;
  130.     STDMETHOD(Execute) (THIS_ LPDIRECT3DEXECUTEBUFFER, LPDIRECT3DVIEWPORT, DWORD) PURE;
  131.     STDMETHOD(AddViewport) (THIS_ LPDIRECT3DVIEWPORT) PURE;
  132.     STDMETHOD(DeleteViewport) (THIS_ LPDIRECT3DVIEWPORT) PURE;
  133.     STDMETHOD(NextViewport) (THIS_ LPDIRECT3DVIEWPORT, LPDIRECT3DVIEWPORT*, DWORD) PURE;
  134.     STDMETHOD(Pick) (THIS_ LPDIRECT3DEXECUTEBUFFER, LPDIRECT3DVIEWPORT, DWORD, LPD3DRECT) PURE;
  135.     STDMETHOD(GetPickRecords)(THIS_ LPDWORD, LPD3DPICKRECORD) PURE;
  136.     STDMETHOD(EnumTextureFormats) (THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK, LPVOID) PURE;
  137.     STDMETHOD(CreateMatrix) (THIS_ LPD3DMATRIXHANDLE) PURE;
  138.     STDMETHOD(SetMatrix) (THIS_ D3DMATRIXHANDLE, LPD3DMATRIX) PURE;
  139.     STDMETHOD(GetMatrix) (THIS_ D3DMATRIXHANDLE, LPD3DMATRIX) PURE;
  140.     STDMETHOD(DeleteMatrix) (THIS_ D3DMATRIXHANDLE) PURE;
  141.     STDMETHOD_(HRESULT, BeginScene) (THIS) PURE;
  142.     STDMETHOD_(HRESULT, EndScene) (THIS) PURE;
  143.     STDMETHOD(GetDirect3D) (THIS_ LPDIRECT3D*) PURE;
  144. };
  145.  
  146. #if !defined(__cplusplus) || defined(CINTERFACE)
  147. #define IDirect3DDevice_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
  148. #define IDirect3DDevice_AddRef(p)                       (p)->lpVtbl->AddRef(p)
  149. #define IDirect3DDevice_Release(p)                      (p)->lpVtbl->Release(p)
  150. #define IDirect3DDevice_Initialize(p, a, b, c)          (p)->lpVtbl->Initialize(p, a, b, c)
  151. #define IDirect3DDevice_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
  152. #define IDirect3DDevice_SwapTextureHandles(p, a, b)     (p)->lpVtbl->SwapTextureHandles(p, a, b)
  153. #define IDirect3DDevice_CreateExecuteBuffer(p, a, b, c) (p)->lpVtbl->CreateExecuteBuffer(p, a, b, c)
  154. #define IDirect3DDevice_GetStats(p, a)                  (p)->lpVtbl->CreateViewport(p, a)
  155. #define IDirect3DDevice_Execute(p, a, b, c)             (p)->lpVtbl->Execute(p, a, b, c)
  156. #define IDirect3DDevice_AddViewport(p, a)               (p)->lpVtbl->AddViewport(p, a)
  157. #define IDirect3DDevice_DeleteViewport(p, a)            (p)->lpVtbl->DeleteViewport(p, a)
  158. #define IDirect3DDevice_NextViewport(p, a, b)           (p)->lpVtbl->NextViewport(p, a, b)
  159. #define IDirect3DDevice_Pick(p, a, b, c, d)             (p)->lpVtbl->Pick(p, a, b, c, d)
  160. #define IDirect3DDevice_GetPickRecords(p, a, b)         (p)->lpVtbl->GetPickRecords(p, a, b)
  161. #define IDirect3DDevice_EnumTextureFormats(p, a, b)     (p)->lpVtbl->EnumTextureFormats(p, a, b)
  162. #define IDirect3DDevice_CreateMatrix(p, a)              (p)->lpVtbl->CreateMatrix(p, a)
  163. #define IDirect3DDevice_SetMatrix(p, a, b)              (p)->lpVtbl->SetMatrix(p, a, b)
  164. #define IDirect3DDevice_GetMatrix(p, a, b)              (p)->lpVtbl->GetMatrix(p, a, b)
  165. #define IDirect3DDevice_DeleteMatrix(p, a)              (p)->lpVtbl->DeleteMatrix(p, a)
  166. #define IDirect3DDevice_BeginScene(p)                   (p)->lpVtbl->BeginScene(p)
  167. #define IDirect3DDevice_EndScene(p)                     (p)->lpVtbl->EndScene(p)
  168. #define IDirect3DDevice_GetDirect3D(p, a)               (p)->lpVtbl->GetDirect3D(p, a)
  169. #endif
  170.  
  171. /*
  172.  * IDirect3DExecuteBuffer
  173.  */
  174. #undef INTERFACE
  175. #define INTERFACE IDirect3DExecuteBuffer
  176. DECLARE_INTERFACE_(IDirect3DExecuteBuffer, IUnknown)
  177. {
  178.     /*** IUnknown methods ***/
  179.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  180.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  181.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  182.     /*** IDirect3DExecuteBuffer methods ***/
  183.     STDMETHOD(Initialize) (THIS_ LPDIRECT3DDEVICE, LPD3DEXECUTEBUFFERDESC) PURE;
  184.     STDMETHOD(Lock) (THIS_ LPD3DEXECUTEBUFFERDESC) PURE;
  185.     STDMETHOD_(HRESULT, Unlock) (THIS) PURE;
  186.     STDMETHOD(SetExecuteData) (THIS_ LPD3DEXECUTEDATA) PURE;
  187.     STDMETHOD(GetExecuteData) (THIS_ LPD3DEXECUTEDATA) PURE;
  188.     STDMETHOD(Validate) (THIS_ LPDWORD, LPD3DVALIDATECALLBACK, LPVOID, DWORD) PURE;
  189.     STDMETHOD(Optimize) (THIS_ DWORD) PURE;
  190. };
  191.  
  192. #if !defined(__cplusplus) || defined(CINTERFACE)
  193. #define IDirect3DExecuteBuffer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  194. #define IDirect3DExecuteBuffer_AddRef(p)               (p)->lpVtbl->AddRef(p)
  195. #define IDirect3DExecuteBuffer_Release(p)              (p)->lpVtbl->Release(p)
  196. #define IDirect3DExecuteBuffer_Initialize(p, a, b)     (p)->lpVtbl->Initialize(p, a, b)
  197. #define IDirect3DExecuteBuffer_Lock(p, a)              (p)->lpVtbl->Lock(p, a)
  198. #define IDirect3DExecuteBuffer_Unlock(p)               (p)->lpVtbl->Unlock(p)
  199. #define IDirect3DExecuteBuffer_SetExecuteData(p, a)    (p)->lpVtbl->SetExecuteData(p, a)
  200. #define IDirect3DExecuteBuffer_Validate(p, a, b, c, d) (p)->lpVtbl->Validata(p, a, b, c, d)
  201. #endif
  202.  
  203. /*
  204.  * Flags for execute buffer calls
  205.  */
  206. #define D3DNEXT_NEXT    0x00000001l
  207. #define D3DNEXT_HEAD    0x00000002l
  208. #define D3DNEXT_TAIL    0x00000004l
  209.  
  210. /*
  211.  * IDirect3DLight
  212.  */
  213. #undef INTERFACE
  214. #define INTERFACE IDirect3DLight
  215. DECLARE_INTERFACE_(IDirect3DLight, IUnknown)
  216. {
  217.     /*** IUnknown methods ***/
  218.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  219.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  220.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  221.     /*** IDirect3DLight methods ***/
  222.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  223.     STDMETHOD(SetLight) (THIS_ LPD3DLIGHT) PURE;
  224.     STDMETHOD(GetLight) (THIS_ LPD3DLIGHT) PURE;
  225. };
  226.  
  227. #if !defined(__cplusplus) || defined(CINTERFACE)
  228. #define IDirect3DLight_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  229. #define IDirect3DLight_AddRef(p)               (p)->lpVtbl->AddRef(p)
  230. #define IDirect3DLight_Release(p)              (p)->lpVtbl->Release(p)
  231. #define IDirect3DLight_Initialize(p, a)        (p)->lpVtbl->Initialize(p, a)
  232. #define IDirect3DLight_SetLight(p, a)          (p)->lpVtbl->SetLight(p, a)
  233. #define IDirect3DLight_GetLight(p, a)          (p)->lpVtbl->GetLight(p, a)
  234. #endif
  235.  
  236. /*
  237.  * IDirect3DMaterial
  238.  */
  239. #undef INTERFACE
  240. #define INTERFACE IDirect3DMaterial
  241. DECLARE_INTERFACE_(IDirect3DMaterial, IUnknown)
  242. {
  243.     /*** IUnknown methods ***/
  244.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  245.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  246.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  247.     /*** IDirect3DMaterial methods ***/
  248.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  249.     STDMETHOD(SetMaterial) (THIS_ LPD3DMATERIAL) PURE;
  250.     STDMETHOD(GetMaterial) (THIS_ LPD3DMATERIAL) PURE;
  251.     STDMETHOD(GetHandle) (THIS_ LPDIRECT3DDEVICE, LPD3DMATERIALHANDLE) PURE;
  252.     STDMETHOD_(HRESULT, Reserve) (THIS) PURE;
  253.     STDMETHOD_(HRESULT, Unreserve) (THIS) PURE;
  254. };
  255.  
  256. #if !defined(__cplusplus) || defined(CINTERFACE)
  257. #define IDirect3DMaterial_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  258. #define IDirect3DMaterial_AddRef(p)               (p)->lpVtbl->AddRef(p)
  259. #define IDirect3DMaterial_Release(p)              (p)->lpVtbl->Release(p)
  260. #define IDirect3DMaterial_Initialize(p, a)        (p)->lpVtbl->Initialize(p, a)
  261. #define IDirect3DMaterial_SetMaterial(p, a)       (p)->lpVtbl->SetMaterial(p, a)
  262. #define IDirect3DMaterial_GetMaterial(p, a)       (p)->lpVtbl->GetMaterial(p, a)
  263. #define IDirect3DMaterial_GetHandle(p, a, b)      (p)->lpVtbl->GetHandle(p, a, b)
  264. #define IDirect3DMaterial_Reserve(p)              (p)->lpVtbl->Reserve(p)
  265. #define IDirect3DMaterial_Unreserve(p)            (p)->lpVtbl->Unreserve(p)
  266. #endif
  267.  
  268. /*
  269.  * IDirect3DTexture
  270.  */
  271. #undef INTERFACE
  272. #define INTERFACE IDirect3DTexture
  273. DECLARE_INTERFACE_(IDirect3DTexture, IUnknown)
  274. {
  275.     /*** IUnknown methods ***/
  276.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  277.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  278.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  279.     /*** IDirect3DTexture methods ***/
  280.     STDMETHOD(Initialize) (THIS_ LPDIRECT3DDEVICE, LPDIRECTDRAWSURFACE) PURE;
  281.     STDMETHOD(GetHandle) (THIS_ LPDIRECT3DDEVICE, LPD3DTEXTUREHANDLE) PURE;
  282.     STDMETHOD(PaletteChanged) (THIS_ DWORD, DWORD) PURE;
  283.     STDMETHOD(Load) (THIS_ LPDIRECT3DTEXTURE) PURE;
  284.     STDMETHOD_(HRESULT, Unload) (THIS) PURE;
  285. };
  286.  
  287. #if !defined(__cplusplus) || defined(CINTERFACE)
  288. #define IDirect3DTexture_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  289. #define IDirect3DTexture_AddRef(p)               (p)->lpVtbl->AddRef(p)
  290. #define IDirect3DTexture_Release(p)              (p)->lpVtbl->Release(p)
  291. #define IDirect3DTexture_Initialize(p, a, b)     (p)->lpVtbl->Initialize(p, a, b)
  292. #define IDirect3DTexture_GetHandle(p, a, b)      (p)->lpVtbl->GetHandle(p, a, b)
  293. #define IDirect3DTexture_PaletteChanged(p, a, b) (p)->lpVtbl->PaletteChanged(p, a, b)
  294. #define IDirect3DTexture_Load(p, a)              (p)->lpVtbl->Load(p, a)
  295. #define IDirect3DTexture_Unload(p)               (p)->lpVtbl->Unload(p)
  296. #endif
  297.  
  298. /*
  299.  * IDirect3DViewport
  300.  */
  301. #undef INTERFACE
  302. #define INTERFACE IDirect3DViewport
  303. DECLARE_INTERFACE_(IDirect3DViewport, IUnknown)
  304. {
  305.     /*** IUnknown methods ***/
  306.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  307.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  308.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  309.     /*** IDirect3DViewport methods ***/
  310.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  311.     STDMETHOD(GetViewport) (THIS_ LPD3DVIEWPORT) PURE;
  312.     STDMETHOD(SetViewport) (THIS_ LPD3DVIEWPORT) PURE;
  313.     STDMETHOD(TransformVertices) (THIS_ DWORD, LPD3DTRANSFORMDATA, DWORD, LPDWORD) PURE;
  314.     STDMETHOD(LightElements) (THIS_ DWORD, LPD3DLIGHTDATA) PURE;
  315.     STDMETHOD(SetBackground) (THIS_ D3DMATERIALHANDLE) PURE;
  316.     STDMETHOD(GetBackground) (THIS_ LPD3DMATERIALHANDLE, LPBOOL) PURE;
  317.     STDMETHOD(SetBackgroundDepth) (THIS_ LPDIRECTDRAWSURFACE) PURE;
  318.     STDMETHOD(GetBackgroundDepth) (THIS_ LPDIRECTDRAWSURFACE*, LPBOOL) PURE;
  319.     STDMETHOD(Clear) (THIS_ DWORD, LPD3DRECT, DWORD) PURE;
  320.     STDMETHOD(AddLight) (THIS_ LPDIRECT3DLIGHT) PURE;
  321.     STDMETHOD(DeleteLight) (THIS_ LPDIRECT3DLIGHT) PURE;
  322.     STDMETHOD(NextLight) (THIS_ LPDIRECT3DLIGHT, LPDIRECT3DLIGHT*, DWORD) PURE;
  323. };
  324.  
  325. #if !defined(__cplusplus) || defined(CINTERFACE)
  326. #define IDirect3DViewport_QueryInterface(p, a, b)          (p)->lpVtbl->QueryInterface(p, a, b)
  327. #define IDirect3DViewport_AddRef(p)                        (p)->lpVtbl->AddRef(p)
  328. #define IDirect3DViewport_Release(p)                       (p)->lpVtbl->Release(p)
  329. #define IDirect3DViewport_Initialize(p, a)                 (p)->lpVtbl->Initialize(p, a)
  330. #define IDirect3DViewport_GetViewport(p, a)                (p)->lpVtbl->GetViewport(p, a)
  331. #define IDirect3DViewport_SetViewport(p, a)                (p)->lpVtbl->SetViewport(p, a)
  332. #define IDirect3DViewport_TransformVertices(p, a, b, c, d) (p)->lpVtbl->TransformVertices(p, a, b, c, d)
  333. #define IDirect3DViewport_LightElements(p, a, b)           (p)->lpVtbl->LightElements(p, a, b)
  334. #define IDirect3DViewport_SetBackground(p, a)              (p)->lpVtbl->SetBackground(p, a)
  335. #define IDirect3DViewport_GetBackground(p, a, b)           (p)->lpVtbl->GetBackground(p, a, b)
  336. #define IDirect3DViewport_Clear(p, a, b, c)                (p)->lpVtbl->Clear(p, a, b, c)
  337. #define IDirect3DViewport_AddLight(p, a)                   (p)->lpVtbl->AddLight(p, a)
  338. #define IDirect3DViewport_DeleteLight(p, a)                (p)->lpVtbl->DeleteLight(p, a)
  339. #define IDirect3DViewport_NextLight(p, a, b, c)            (p)->lpVtbl->NextLight(p, a, b, c)
  340. #endif
  341.  
  342. /*
  343.  * Direct3D Errors
  344.  * DirectDraw error codes are used when errors not specified here.
  345.  */
  346. #define D3D_OK                          DD_OK
  347. #define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
  348. #define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
  349.  
  350. #define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
  351. #define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
  352. #define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
  353. #define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
  354. #define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
  355. #define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
  356.  
  357. #define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
  358. #define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
  359.  
  360. #define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
  361. #define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
  362. #define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
  363. #define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
  364. #define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
  365. #define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
  366. #define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
  367. #define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
  368. #define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
  369. #define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
  370.  
  371. #define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
  372. #define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
  373. #define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
  374. #define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
  375. #define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
  376.  
  377. #define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
  378. #define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
  379. #define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
  380. #define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
  381.  
  382. #define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
  383.  
  384. #define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
  385. #define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
  386. #define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
  387. #define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
  388.  
  389. #ifdef __cplusplus
  390. };
  391. #endif
  392.  
  393. #pragma option pop
  394. #endif /* _D3D_H_ */
  395.